﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MobileControlGuru.sqlite_db
{
    public class TaskDbContext : DbContext
    {
        public TaskDbContext() : base("name=TaskDbContext")
        {
            Database.SetInitializer<TaskDbContext>(null);
        }
        /// <summary>
        /// 指定连接字符串
        /// </summary>
        /// <param name="filename"></param>
        public TaskDbContext(string filename)
            : base(new SQLiteConnection()
            {
                ConnectionString =
                    new SQLiteConnectionStringBuilder()
                    { DataSource = filename, ForeignKeys = true }
                    .ConnectionString
            }, true)
        {
        }
        public DbSet<TaskInfoTB> TaskInfoTB { get; set; }

        public DbSet<TaskItemTB> TaskItemTB { get; set; }
        // 如果需要，可以在这里覆盖 OnModelCreating 方法来配置模型
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            // 禁用复数命名约定，因为 EF 默认会将 DbSet 名称视为单数形式的实体名称，并将其复数化作为表名
            //modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            // 例如，配置表名（虽然EF6通常会自动使用类名作为表名，但这里可以显式指定）

            // 配置 TaskInfoTB 实体
            modelBuilder.Entity<TaskInfoTB>().HasKey(e=>e.id);

            modelBuilder.Entity<TaskItemTB>().HasKey(e=>e.id);
            // 如果有需要，可以在这里添加Fluent API配置

            base.OnModelCreating(modelBuilder);
        }
    }
}
